Docker pull 命令详解 您所在的位置:网站首页 docker 拉取镜像 Docker pull 命令详解

Docker pull 命令详解

2023-08-21 11:46| 来源: 网络整理| 查看: 265

Docker Pull 命令

“docker pull”是一个 Docker 命令,用于从镜像仓库中拉取或者更新指定镜像。当我们运行容器并且指定的 Docker 镜像不在本地时,它首先从仓库中拉取它。大多数时候,当我们使用官方 Docker 镜像作为基础镜像创建自己的自定义 Docker 镜像时,镜像是从“hub.docker.com”的公共仓库下载的。此命令中有不同的标志可用,但是,有一些仅适用于较新版本。

语法:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS选项:

–all-tags, -a:用于下载该存储库中具有不同标签的所有镜像。

–disable-content-trust:它会在拉取之前跳过镜像验证。

–platform:用于设置平台。

–quiet, -q:用于静默拉取镜像(不冗长)。

–help:如果我们忘记了,它可以帮助我们了解更多有关命令的信息。

docker pull --help

Docker pull 拉取指定仓库

当我们从命令行运行 pull 命令时,它首先在本地或主机上检查镜像,如果镜像在本地不存在,则 Docker 守护程序连接到公共仓库“hub.docker.com”(如果不存在) ‘daemon.json’ 文件中提到的私有仓库并拉取命令中提到的 Docker 镜像,如果它在本地找到该镜像,则它会检查更新并下载更新版本的镜像。它实际上与幕后镜像的摘要相匹配。此外,如果我们不提及标签,则默认情况下它会使用“latest”标签拉取镜像。

如果我们试图访问代理服务器背后的仓库,那么我们需要通过使用 systemd 在主机上设置环境变量来配置 Docker 守护进程的代理设置。

默认情况下,我们只能使用此拉取命令同时拉取镜像的 3 层,如果我们必须下载具有更多层的镜像,那么如果互联网连接速度较慢,它可能会引发超时问题。我们可以调整“daemon.json”文件中的“–max-concurrent-downloads”选项。

例子

让我们通过几个例子来理解命令。

场景: – 从 Docker Hub 拉取 Docker 镜像的不同方式。

1. 拉取不带任何标签的 ‘alpine’ 镜像,如下图:

docker pull alpine

在上面的例子中,我们可以看到,如果我们不提供任何标签,Docker 守护进程默认会拉取带有“latest”标签的镜像,只有当存在带有最新标签的镜像时才会拉取镜像。

2. 拉取带有特定标签的镜像,例如,我们将拉取带有不同标签的相同“alpine”镜像,即“edge”,如下所示: –

docker pull alpine:edge

在上面的例子中,我们可以看到我们在’:’后面指定了标签,所以我们可以指定任何你想要下载的标签,它可能是3、3.12、3.12.0等版本。我们可以浏览任何镜像的可用标签的公共存储库。

3.我们甚至可以通过摘要提取镜像。在上面的例子中我们可以看到,当我们拉取镜像时,有一个叫做摘要的key,所以我们可以使用该摘要来拉取镜像,如下所示: –

docker pull alpine@sha256:3e92a8388546f6b15943678d323afdbbf1d950368264e0317b45e469dfa81d53

在上面的例子中,我们已经拉取了 ‘alpine:edge’ 镜像,但使用了摘要,我们必须在镜像名称后使用 ‘@’ 而不是 ‘:’。如果应用程序支持任何特定的 Docker 镜像,使用摘要拉取镜像非常有用,因为同一镜像的更新版本和相同标签正在更新,因此应用程序可能会中断。

让我们使用标签和摘要提取另一个名为“ubuntu”的镜像,如下所示:

docker pull ubuntu:20.04 docker pull ubuntu@sha256:bc2f7250f69267c9c6b66d7b6a81a54d3878bb85f1ebb5f951c896d13e6ba537

在上面的例子中,我们首先使用标签下载镜像,然后使用同一镜像的摘要来拉取镜像,我们可以看到状态为“Image is up to date …..”因为我们正在拉取相同的镜像。

设想 场景 #1:从不同的仓库或私有仓库中拉取镜像 众所周知,pull 命令默认从 Docker hub 下载镜像,但是,我们可以从我们的私有仓库或任何不同的仓库中拉取镜像,例如,我们必须在从该仓库拉取镜像时指定该仓库的路径,如果我们已经有一个仓库作为容器在同一台服务器上运行,我们可以使用以下命令从该本地仓库中提取 Docker 镜像。 docker pull localhost:5000/alpine

在上面的快照中,我们可以看到我们首先提到了仓库的路径,然后是仓库名称,然后是标签,该路径只是该服务器的 URL,没有协议说明符 (https://)。

重要的是镜像必须在私有仓库上可用。出于本示例的目的,首先使用名称“localhost:5000/alpine”标记现有的 alpine 镜像并将其推送到本地仓库。

场景 #2:拉取一个包含所有可用标签的仓库

2. 我们可以使用 ‘-all-tags’ 或 ‘-a’ 选项一次拉取所有不同标签的镜像,因为 docker pull 命令默认一次只拉取一个镜像,命令如下所示: –

docker pull --all-tags alpine

在上面的例子中,我们可以看到它已经开始从 ‘alpine’ 仓库下载具有不同标签的所有镜像。我们可以使用“ctrl+c”键盘快捷键来中断拉取。我们可以使用“docker image ls”命令来验证与以下快照中所示的相同: –

docker image ls

场景 #3:拉取未签名且启用内容信任的 Docker 镜像

我们可以使用“–disable-content-trust”选项下载未经验证的镜像,如下所示:

docker pull localhost:5000/alpine docker pull --disable-content-trust localhost:5000/alpine

在上面的快照中,我们可以看到第一个命令在拉取镜像时抛出了一个错误,因为镜像没有经过验证并且启用了“DOCKER_CONTENT_TRUST”,但是,当我们使用“-disable-content-trust”选项时,我们可以拉出镜像而不会出现任何错误。默认情况下,它是禁用的,因此为了测试这个场景,我们可以使用“export DOCKER_CONTENT_TRUST=1”命令来启用它。

场景 #4:在没有任何详细输出的情况下拉取镜像

我们可以使用 ‘-quiet’ 或 ‘-q’ 选项来抑制详细输出,如下所示:

docker pull -q nginx:alpine

在上面的快照中,我们可以看到输出没有显示下载或摘要或状态的不同层,如果我们在没有“-q”选项的情况下拉取镜像,我们可以看到这些,如下面的快照所示: –

docker pull nginx:alpine

Docker Pull的优势 它有助于从任何仓库下载镜像,它可能是公共仓库或私有仓库。 如果需要,它甚至可以使用“–all-tags”选项拉取整个仓库。 它有助于下载未签名的 Docker 镜像,但是,我们在这样做时应该注意风险。 结论

在使用 Docker 时,这是一个方便且经常使用的命令。’-platform’ 选项仅适用于目前启用的实验性功能。如果对镜像不熟悉,比如它是如何工作的或它的作用,不建议下载未签名的 Docker 镜像。

推荐文章

这是 Docker 拉取指南。这里我们分别讨论介绍、场景和拉命令如何在 Docker 中工作?

本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有